package com.divemotor.ventarepuestosinternet.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

import org.apache.log4j.Logger;
import org.primefaces.context.RequestContext;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.event.SelectEvent;
import org.springframework.dao.DataIntegrityViolationException;

import com.divemotor.ventarepuestosinternet.beans.adapter.DataAdapter;
import com.divemotor.ventarepuestosinternet.beans.adapter.ImagenAdapter;
import com.divemotor.ventarepuestosinternet.beans.adapter.ModeloFabricaAdapter;
import com.divemotor.ventarepuestosinternet.beans.adapter.SubGrupoAdapter;
import com.divemotor.ventarepuestosinternet.beans.form.SubGrupoForm;
import com.divemotor.ventarepuestosinternet.beans.lazy.ModeloFabricaLazy;
import com.divemotor.ventarepuestosinternet.beans.lazy.RepuestoImagenLazy;
import com.divemotor.ventarepuestosinternet.exception.DivemotorBusinessException;
import com.divemotor.ventarepuestosinternet.model.Grupo;
import com.divemotor.ventarepuestosinternet.model.Imagen;
import com.divemotor.ventarepuestosinternet.model.ImagenRepuesto;
import com.divemotor.ventarepuestosinternet.model.ImagenRepuestoNroSa;
import com.divemotor.ventarepuestosinternet.model.ModeloFabrica;
import com.divemotor.ventarepuestosinternet.model.ModeloFabricaPK;
import com.divemotor.ventarepuestosinternet.model.Repuesto;
import com.divemotor.ventarepuestosinternet.model.SubGrupo;
import com.divemotor.ventarepuestosinternet.service.GrupoService;
import com.divemotor.ventarepuestosinternet.service.ImagenRepuestoService;
import com.divemotor.ventarepuestosinternet.service.ImagenService;
import com.divemotor.ventarepuestosinternet.service.MarcaService;
import com.divemotor.ventarepuestosinternet.service.ModeloFabricaService;
import com.divemotor.ventarepuestosinternet.service.RepuestoService;
import com.divemotor.ventarepuestosinternet.service.SubGrupoService;
import com.divemotor.ventarepuestosinternet.service.TipoComponenteService;
import com.divemotor.ventarepuestosinternet.util.Constantes;
import com.divemotor.ventarepuestosinternet.util.FacesContextUtil;

@ManagedBean(name = "gestionSubGruposController")
@ViewScoped
public class GestionSubGruposController extends SubGrupoForm implements Serializable {

	private static final Logger logger = Logger.getLogger(GestionSubGruposController.class);
	
	private static final long serialVersionUID = -8324133002170427071L;
	
	@ManagedProperty(value="#{imagenService}")
	private ImagenService imagenService;
	@ManagedProperty(value="#{repuestoService}")
	private RepuestoService repuestoService;
	@ManagedProperty(value="#{imagenRepuestoService}")
	private ImagenRepuestoService imagenRepuestoService;
	@ManagedProperty(value="#{marcaService}")
	private MarcaService marcaService;
	@ManagedProperty(value="#{tipoComponenteService}")
	private TipoComponenteService tipoComponenteService;
	@ManagedProperty(value="#{modeloFabricaService}")
	private ModeloFabricaService modeloFabricaService;
	@ManagedProperty(value="#{grupoService}")
	private GrupoService grupoService; 
	@ManagedProperty(value="#{subGrupoService}")
	private SubGrupoService subGrupoService;
	
	private List<ImagenRepuestoNroSa> listaNumeroSA;
	private ImagenRepuestoNroSa selectNumero;
	private ImagenRepuesto selectImagenRepuestoSA;
	private String nroCorrSa;
	private String nroExtSa;
	
	public GestionSubGruposController() {
		subGrupoSeleccionadoGestionImagenes = new SubGrupo();
		listaImagenesSubGrupoSeleccionado = new ArrayList<Imagen>();
		imagenSeleccionadaGestionRepuestos = new Imagen();
		imagenEditar = new Imagen();
		imagenEliminar = new Imagen();
		
		repuestoFiltro = new Repuesto();
		listaRepuestosBusqueda = new ArrayList<Repuesto>();
		repuestoSeleccionadoAsignar = new Repuesto();
		
		imagenRepuestoAsignar = new ImagenRepuesto();
		listaRepuestosAsignadosImagenSeleccionada = new ArrayList<ImagenRepuesto>();
		imagenRepuestoEditar = new ImagenRepuesto();
		imagenRepuestoDesasignar = new ImagenRepuesto();
		listaMarcaImagen = new ArrayList<DataAdapter>();
		listaTipoComponenteImagen = new ArrayList<DataAdapter>();
		modeloFabricaSeleccionadoImagen = new ModeloFabricaAdapter();
		deshabilitarCargaImagenes = true;

		subGrupoNuevo = new SubGrupo();
        idGrupoNuevo = Constantes.NO_SELECCIONADO;
        listaSubgrupos = new ArrayList<SubGrupo>();
        subGrupoBuscar = new SubGrupo();
        idGrupoBuscar = Constantes.NO_SELECCIONADO;
        subGrupoEliminar = new SubGrupo();
        subGrupoEditar = new SubGrupo(new Grupo());
        
        tipoComponenteSeleccionadoImagen = Constantes.STR_NO_SELECCIONADO;
        marcaSeleccionadaImagen = Constantes.STR_NO_SELECCIONADO;
	}
	
	@PostConstruct
	public void init(){
		logger.info("PostConstruct");
		listarGrupos();
		cargarListas();
		listarSubgrupos();
		try {
			rutaImagenes = imagenService.obtenerRutaImagenes();
		} catch (DivemotorBusinessException e) {
			logger.error("EX* init: " + e.getMessage());
		}
	}
	
	private void listarGrupos() {
		try {
			listaGrupos = grupoService.obtenerComboGrupos();
		} catch (DivemotorBusinessException e) {
			logger.error("EX* listarGrupos: " + e.getMessage());
		}
	}

	public void listarSubgrupos(){
		try {
			listaSubgrupos = subGrupoService.listar();
		} catch (Exception e) {
			logger.error("EX* listar: " + e.getMessage());
		}
	} 
	
	public void cargarListas() {
		try {
			listaMarcaImagen = marcaService.listarComboMarcas();
			listaTipoComponenteImagen = tipoComponenteService.listarComboTipoComponente();
			
		} catch (DivemotorBusinessException e) {
			logger.error("EX* cargarListas DivemotorBusinessException: " + e.getMessage());
			FacesContextUtil.warn(e.getMessage());
		} catch (Exception e) {
			logger.error("EX* cargarListas Exception: " + e.getMessage());
			FacesContextUtil.error(Constantes.MSJ_ERROR_SISTEMA);
		}
	}

	public void insertarSubgrupo(){
		try {
			Grupo grupo = new Grupo();
			grupo.setIdGrupo(idGrupoNuevo);
			subGrupoNuevo.setGrupo(grupo);
			subGrupoService.insertar(subGrupoNuevo);
			listarSubgrupos(); 
			FacesContextUtil.info(Constantes.MSJ_SUBGRUPO_REGISTRO_OK);
		} catch (DivemotorBusinessException e) {
			logger.error("EX* insertarSubgrupo DivemotorBusinessException: " + e.getMessage());
			RequestContext.getCurrentInstance().addCallbackParam("ocurrioError", true);
			FacesContextUtil.warn(e.getMessage());
		} catch (Exception e) {
			logger.error("EX* insertarSubgrupo Exception: " + e.getMessage());
			RequestContext.getCurrentInstance(). addCallbackParam("ocurrioError", true);
			FacesContextUtil.error(Constantes.MSJ_ERROR_SISTEMA);
		}
	}

	public void cargarFormSubgrupoNuevo(){
		idGrupoNuevo = Constantes.NO_SELECCIONADO;
		subGrupoNuevo = new SubGrupo();
	}
	
	public void buscar(){	
		try {
			Grupo grupo = new Grupo();
			grupo.setIdGrupo(idGrupoBuscar);
			subGrupoBuscar.setGrupo(grupo);
			listaSubgrupos = subGrupoService.buscar(subGrupoBuscar);
		} catch (DivemotorBusinessException e) {
			logger.error("EX* buscar: " + e.getMessage());
		}
	}

	public void limpiarFiltro(){
		subGrupoBuscar = new SubGrupo();
		idGrupoBuscar = Constantes.NO_SELECCIONADO;
	}

	public void eliminar(){
		try {
			subGrupoService.eliminar(subGrupoEliminar);
			FacesContextUtil.info(Constantes.MSJ_SUBGRUPO_ELIMINADO_OK);
			listarSubgrupos();
		} catch (DivemotorBusinessException e) {
			logger.error("EX* eliminar DivemotorBusinessException: " + e.getMessage());
			FacesContextUtil.warn(e.getMessage());
		}catch (Exception e){
			logger.error("EX* eliminar Exception: " + e.getMessage());
			FacesContextUtil.error(Constantes.MSJ_ERROR_SISTEMA);
		}
	}
	
	public void actualizar(){
		try {
			subGrupoService.actualizar(subGrupoEditar);
			listarSubgrupos();
			FacesContextUtil.info(Constantes.MSJ_SUBGRUPO_ACTUALIZADO_OK);
		} catch (DivemotorBusinessException e) {
			logger.error("EX* actualizar DivemotorBusinessException: " + e.getMessage());
			RequestContext.getCurrentInstance().addCallbackParam("ocurrioError", true);
			FacesContextUtil.warn(e.getMessage());
		}catch (Exception e){
			logger.error("EX* actualizar Exception: " + e.getMessage());
			RequestContext.getCurrentInstance().addCallbackParam("ocurrioError", true);
			FacesContextUtil.error(Constantes.MSJ_ERROR_SISTEMA);
		}
	}
	
	public void seleccionarSubGrupoImagenes() {
		listaImagenesSubGrupoSeleccionado = new ArrayList<Imagen>();
		deshabilitarCargaImagenes = true;
		marcaSeleccionadaImagen = Constantes.STR_NO_SELECCIONADO;
		tipoComponenteSeleccionadoImagen = Constantes.STR_NO_SELECCIONADO;
		modeloFabricaSeleccionadoImagen = new ModeloFabricaAdapter();
	}

	
	public void seleccionarModeloFabricaImagen() {
		try {
			listarImagenesSubGrupoSeleccionado();	
			deshabilitarCargaImagenes = verificarModeloFabricaImagen();
			
		} catch (Exception e) {
			logger.error("EX* seleccionarModeloFabricaImagen Exception: " + e.getMessage());
			FacesContextUtil.error(Constantes.MSJ_ERROR_SISTEMA);
		}
	}

	public void subirArchivo(FileUploadEvent event) {
		try {
			Imagen imagenNueva = new Imagen();
			imagenNueva.setArchivo(event.getFile().getInputstream());
			imagenNueva.setNombreArchivo(event.getFile().getFileName());
			imagenNueva.setSubGrupo(subGrupoSeleccionadoGestionImagenes);
			
			ModeloFabricaPK modeloFabricaPK = new ModeloFabricaPK();
			modeloFabricaPK.setIdMarca(modeloFabricaSeleccionadoImagen.getIdMarca());
			modeloFabricaPK.setIdTipoComponente(modeloFabricaSeleccionadoImagen.getIdTipoComponente());
			modeloFabricaPK.setIdModeloFabrica(modeloFabricaSeleccionadoImagen.getIdModeloFabrica());
			
			ModeloFabrica modeloFabrica = new ModeloFabrica();
			modeloFabrica.setModeloFabricaPK(modeloFabricaPK);
			
			imagenNueva.setModeloFabrica(modeloFabrica);
			
			imagenService.insertar(imagenNueva);
			listarImagenesSubGrupoSeleccionado();
			FacesContextUtil.info(Constantes.MSJ_IMAGEN_CARGADO_OK);
			
		} catch (DivemotorBusinessException e) {
			logger.error("EX* subirArchivo DivemotorBusinessException: " + e.getMessage());
			FacesContextUtil.warn(e.getMessage());
		} catch (Exception e) {
			logger.error("EX* subirArchivo Exception: " + e.getMessage());
			FacesContextUtil.error(Constantes.MSJ_ERROR_SISTEMA);
		}
	}
	
	public void eliminarImagen() {
		try {
			imagenService.eliminarImagen(imagenEliminar);
			listarImagenesSubGrupoSeleccionado();
			FacesContextUtil.info(Constantes.MSJ_IMAGEN_ELIMINADO_OK);
		} catch (DivemotorBusinessException e) {
			logger.error("EX* eliminarImagen DivemotorBusinessException: " + e.getMessage());
			FacesContextUtil.warn(e.getMessage());
		} catch (Exception e) {
			logger.error("EX* eliminarImagen Exception: " + e.getMessage());
			FacesContextUtil.error(Constantes.MSJ_ERROR_SISTEMA);		}
	}
	
	public void editarImagen() {
		try {
			imagenService.editarImagen(imagenEditar);
			listarImagenesSubGrupoSeleccionado();																							  
			FacesContextUtil.info(Constantes.MSJ_IMAGEN_ACTUALIZADO_OK);
		} catch (DivemotorBusinessException e) {
			logger.error("EX* editarImagen DivemotorBusinessException: " + e.getMessage());
			FacesContextUtil.warn(e.getMessage());
		} catch (Exception e) {
			logger.error("EX* editarImagen Exception: " + e.getMessage());
			FacesContextUtil.error(Constantes.MSJ_ERROR_SISTEMA);
		}
	}
		
	public void seleccionarImagenGestionRepuestos() {
		try {
			listaRepuestosAsignadosImagenSeleccionada = imagenRepuestoService.listarImagenesRepuestosPorImagen(imagenSeleccionadaGestionRepuestos);
			repuestoFiltro = new Repuesto();
			buscarRepuestos();
		} catch (DivemotorBusinessException e) {
			logger.error("EX* seleccionarImagenGestionRepuestos DivemotorBusinessException: " + e.getMessage());
			FacesContextUtil.warn(e.getMessage());
		} catch (Exception e) {
			logger.error("EX* seleccionarImagenGestionRepuestos Exception: " + e.getMessage());
			FacesContextUtil.error(Constantes.MSJ_ERROR_SISTEMA);
		}
	}
	
	public void buscarRepuestos() {
		logger.info("buscarRepuestos");
		listaRepuestosBusquedaLazy = new RepuestoImagenLazy(repuestoService, repuestoFiltro, imagenSeleccionadaGestionRepuestos); 
	}
	
	public void limpiarFiltroRepuestos() {
		repuestoFiltro = new Repuesto();
	}
	
	public void asignarImagenRepuesto() {
		try {
			imagenRepuestoAsignar.setImagen(imagenSeleccionadaGestionRepuestos);
			if(!imagenRepuestoService.existeImagenRepuesto(imagenRepuestoAsignar)) {
				imagenRepuestoService.insertarImagen(imagenRepuestoAsignar);
				listaRepuestosAsignadosImagenSeleccionada = imagenRepuestoService.listarImagenesRepuestosPorImagen(imagenSeleccionadaGestionRepuestos);
				buscarRepuestos();
				FacesContextUtil.info(Constantes.MSJ_REPUESTO_IMAGEN_ASINADO_OK);
			} else {
				RequestContext.getCurrentInstance().addCallbackParam("ocurrioError", true);
				FacesContextUtil.error(Constantes.MSJ_REPUESTO_EN_SECUENCIA);
			}
		} catch (DivemotorBusinessException e) {
			logger.error("EX* asignarImagenRepuesto DivemotorBusinessException: " + e.getMessage());
			RequestContext.getCurrentInstance().addCallbackParam("ocurrioError", true);
			FacesContextUtil.warn(e.getMessage());
		}
	}
	
	public void editarImagenRepuesto() {
		try {
			if(!imagenRepuestoService.existeImagenRepuesto(imagenRepuestoEditar)){
				imagenRepuestoService.actualizar(imagenRepuestoEditar);
				listaRepuestosAsignadosImagenSeleccionada = imagenRepuestoService.listarImagenesRepuestosPorImagen(imagenSeleccionadaGestionRepuestos);
				buscarRepuestos();
				FacesContextUtil.info(Constantes.MSJ_REPUESTO_IMAGEN_ACTUALIZADO_OK);
			} else {
				RequestContext.getCurrentInstance().addCallbackParam("ocurrioError", true);
				FacesContextUtil.error(Constantes.MSJ_REPUESTO_EN_SECUENCIA);
			}	
		} catch (DivemotorBusinessException e) {
			logger.error("EX* editarImagenRepuesto DivemotorBusinessException: " + e.getMessage());
			RequestContext.getCurrentInstance().addCallbackParam("ocurrioError", true);
			FacesContextUtil.warn(e.getMessage());
		} catch (Exception e) {
			logger.error("EX* editarImagenRepuesto Exception: " + e.getMessage());
			FacesContextUtil.error(Constantes.MSJ_ERROR_SISTEMA);
		}
	}
	
	public void desasignarImagenRepuesto() {
		try {
			imagenRepuestoService.desAsignarRepuestoAImagen(imagenRepuestoDesasignar); // actualizar el estado del repuesto: ELIMINADO
			listaRepuestosAsignadosImagenSeleccionada = imagenRepuestoService.listarImagenesRepuestosPorImagen(imagenSeleccionadaGestionRepuestos);
			buscarRepuestos();
			FacesContextUtil.info(Constantes.MSJ_REPUESTO_IMAGEN_DESASIGNADO_OK);
		} catch (DivemotorBusinessException e) {
			logger.error("EX* desasignarImagenRepuesto DivemotorBusinessException: " + e.getMessage());
			FacesContextUtil.warn(e.getMessage());
		} catch (Exception e) {
			logger.error("EX* desasignarImagenRepuesto Exception: " + e.getMessage());
			FacesContextUtil.error(Constantes.MSJ_ERROR_SISTEMA);
		}
	}
	
	public void recargarListaModeloFabrica() {
		String idTipoComponente = tipoComponenteSeleccionadoImagen;
		String idMarca 			= marcaSeleccionadaImagen;
			
		if (!Constantes.STR_NO_SELECCIONADO.equals(idTipoComponente) && !Constantes.STR_NO_SELECCIONADO.equals(idMarca)) {
			busquedaModeloFabricaActivo=true;
		}else{
			busquedaModeloFabricaActivo=false;
		}
		
		deshabilitarCargaImagenes 		  = true;
		listaImagenesSubGrupoSeleccionado = new ArrayList<Imagen>();
	}

	
	public void buscarModelofabricaSeleccion() {
		ModeloFabricaAdapter modeloFabrica = new ModeloFabricaAdapter();
		modeloFabrica.setIdMarca(marcaSeleccionadaImagen);
		modeloFabrica.setIdTipoComponente(tipoComponenteSeleccionadoImagen);
		listaModeloFabricaLazy = new ModeloFabricaLazy(modeloFabricaService, modeloFabrica);
	}
	
	private Boolean verificarModeloFabricaImagen(){
		Boolean desabilitarCampo = false;
		String modeloFabrica = modeloFabricaSeleccionadoImagen.getIdModeloFabrica();
		String marca = modeloFabricaSeleccionadoImagen.getIdMarca();
		String tipoComponente = modeloFabricaSeleccionadoImagen.getIdTipoComponente();
		
		if(modeloFabrica != null && marca!= null && tipoComponente != null){
			desabilitarCampo = false;
		} else {
			desabilitarCampo = true;
		}
		
		return desabilitarCampo;
	}
	
	public void seleccionarModeloFabrica(SelectEvent event) { 
		modeloFabricaSeleccionadoImagen=((ModeloFabricaAdapter) event.getObject());
		try {
			listarImagenesSubGrupoSeleccionado();
			deshabilitarCargaImagenes 		  = verificarModeloFabricaImagen();
		} catch (Exception e) {
			logger.error("EX* seleccionarModeloFabrica Exception: " + e.getMessage());
			FacesContextUtil.error(Constantes.MSJ_ERROR_SISTEMA);
		} 
    } 
	
	private void listarImagenesSubGrupoSeleccionado() {
		ImagenAdapter adapter = new ImagenAdapter();
		SubGrupoAdapter subGrupo = new SubGrupoAdapter();
		adapter.setModeloFabrica(modeloFabricaSeleccionadoImagen);
		subGrupo.setIdSubgrupo(subGrupoSeleccionadoGestionImagenes.getIdSubGrupo());
		adapter.setSubGrupo(subGrupo);
		listaImagenesSubGrupoSeleccionado = imagenService.listarImagenesPorSubGrupoModeloFab(adapter);
	}
	
	public void limpiarRepuestoAsignar() {
		imagenRepuestoAsignar.setCantidadReferencial(null);
		imagenRepuestoAsignar.setPosicion(null);
		imagenRepuestoAsignar.setObservacion(null);
		imagenRepuestoAsignar.setEstado(Constantes.STR_NO_SELECCIONADO);
	}
	
	public void agregarImagenRepuestoNroSa(){
		try {
			ImagenRepuestoNroSa imgRptoNroSa = new ImagenRepuestoNroSa(selectImagenRepuestoSA.getIdImagenRepuesto(), 
																	   nroCorrSa, nroExtSa);
			imagenRepuestoService.insertarNumero(imgRptoNroSa);
			listarImagenRepuestoNroSA(selectImagenRepuestoSA);
			FacesContextUtil.info(Constantes.MSJ_IMG_RTO_NRO_SA_REGISTRO_OK);
		} catch (DataIntegrityViolationException e) {
			logger.error("EX* listarImagenRepuestoNroSA DivemotorBusinessException: " + e.getMessage());
			FacesContextUtil.error(Constantes.MSJ_IMG_RTO_NRO_SA_IDENTICO_OK);
		} catch (Exception e) {
			logger.error("EX* listarImagenRepuestoNroSA Exception: " + e.getMessage());
			FacesContextUtil.error(Constantes.MSJ_ERROR_SISTEMA);
		}
	}
	
	public void listarImagenRepuestoNroSA(ImagenRepuesto imgRepto){
		try {
			selectImagenRepuestoSA = imgRepto;
			listaNumeroSA = imagenRepuestoService.listarNumeroSaAdapter(imgRepto);
			nroCorrSa = Constantes.EMPTY;
			nroExtSa  = Constantes.EMPTY;
		} catch (Exception e) {
			logger.error("EX* listarImagenRepuestoNroSA Exception: " + e.getMessage());
			FacesContextUtil.error(Constantes.MSJ_ERROR_SISTEMA);
		}
	}
	
	public void eliminarEliminarNumeroSa(){
		try {
			selectNumero.setIndEstado(Constantes.ESTADO_ELIMINADO);
			imagenRepuestoService.eliminarNumeroSa(selectNumero);
			FacesContextUtil.info(Constantes.MSJ_IMG_RTO_NRO_SA_ELIMINADO_OK);
			listarImagenRepuestoNroSA(selectImagenRepuestoSA);
		} catch (Exception e) {
			logger.error("EX* eliminarEliminarNumeroSa Exception: " + e.getMessage());
			FacesContextUtil.error(Constantes.MSJ_ERROR_SISTEMA);
		}
	}
	
	public String getNroCorrSa() {
		return nroCorrSa;
	}

	public void setNroCorrSa(String nroCorrSa) {
		this.nroCorrSa = nroCorrSa;
	}

	public String getNroExtSa() {
		return nroExtSa;
	}

	public void setNroExtSa(String nroExtSa) {
		this.nroExtSa = nroExtSa;
	}

	public ImagenRepuestoNroSa getSelectNumero() {
		return selectNumero;
	}

	public void setSelectNumero(ImagenRepuestoNroSa selectNumero) {
		this.selectNumero = selectNumero;
	}

	public List<ImagenRepuestoNroSa> getListaNumeroSA() {
		return listaNumeroSA;
	}

	public void setListaNumeroSA(List<ImagenRepuestoNroSa> listaNumeroSA) {
		this.listaNumeroSA = listaNumeroSA;
	}

	public void setImagenService(ImagenService imagenService) {
		this.imagenService = imagenService;
	}

	public void setRepuestoService(RepuestoService repuestoService) {
		this.repuestoService = repuestoService;
	}

	public void setImagenRepuestoService(ImagenRepuestoService imagenRepuestoService) {
		this.imagenRepuestoService = imagenRepuestoService;
	}

	public void setMarcaService(MarcaService marcaService) {
		this.marcaService = marcaService;
	}

	public void setTipoComponenteService(TipoComponenteService tipoComponenteService) {
		this.tipoComponenteService = tipoComponenteService;
	}

	public void setModeloFabricaService(ModeloFabricaService modeloFabricaService) {
		this.modeloFabricaService = modeloFabricaService;
	}

	public void setGrupoService(GrupoService grupoService) {
		this.grupoService = grupoService;
	}

	public void setSubGrupoService(SubGrupoService subGrupoService) {
		this.subGrupoService = subGrupoService;
	}
	
}
